/**
 *  如何创建一个 pinia 的 store 存储全局数据：
 * 1. 使用defineStore创建store函数, 名字建议use 开头，例如： useXxx
 *    语法：store函数 = defineStore('store的名字',  回调函数, 插件配置选项)
 * 2. store中数据使用 vue3 的 ref/reactive 函数定义，建议用 ref，必须return
 * 3. 导出获取store函数
 */
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
export const useCount = defineStore(
	'count',
	() => {
		// 1. state 全局数据 => ref（推荐） 或 reactive 函数定义
		const count = ref(1)
		const obj = ref({ name: '猫爷', age: 16 })
		const token = ref('')
		// 2. mutations(同步) =》 普通函数
		const add = () => {
			count.value++
		}
		// 3. getters => compunted 函数
		const doubleCount = computed(() => count.value * 2)
		// 4. actions（ 异步） => 普通函数
		const sub = () => {
			setTimeout(() => {
				count.value = 1e3
			}, 2000)
		}
		// 必须把定义到数据和方法返回，外部才能返回
		return { count, obj, add, doubleCount, sub }
	},
	// 插件选项
	// 方式 1：默认存储所有变量
	// {
	// 	unistorage: true 
	// }
	// 方式 2：自定义存储
	{
		unistorage: {
			key: 'meng', // 属性名
			paths: ['count', 'obj'] // 指定存储的变量名
		}
	}
)